﻿#ifndef WRWAVEPLAYER_H
#define WRWAVEPLAYER_H

#include "WRGlobal.h"

//表示波形播放例程。
class WRWavePlayRoutine;

//表示波形播放器。
class WRSOFT_GUIAPP_WORKING_COMMON_CLASS WRWavePlayer
{
public:
    //枚举声音通道。
    enum Channel
    {
        //双声道。
        DualChannel = 0,
        //左声道。
        LeftChannel = 1,
        //右声道。
        RightChannel = 2,
    };

private:
    //播放例程。
    WRWavePlayRoutine* m_routine;

public:
    //初始化波形播放器。
    WRWavePlayer(void);
    //释放当前对象。
    ~WRWavePlayer(void);

    //获取音量。
    float volume(void) const;
    //设置音量，音量范围0~1。
    void volume(float value);

    //获取声道。
    Channel channel(void) const;
    //设置声道。
    void channel(Channel value);

    //初始化播放器并开始播放。
    void start(int sampleRate);
    //停止播放。
    void stop(void);

    //写入要播放的数据。
    void write(const short* data, int size);
    //写入要播放的数据。
    inline void write(const void* data, int size)
    {
        write((const short*)data, size / sizeof(short));
    }

    //获取是否正在播放。
    bool status(void) const;

    //获取采样速率。
    int sampleRate(void) const;
};

#endif // WRWAVEPLAYER_H
